অ্যাপাচি পিওআই (Apache POI) একটি ওপেন সোর্স লাইব্রেরি যা Java ব্যবহারকারীদের Microsoft Office ফাইল ফরম্যাটে কাজ করার সুযোগ দেয়। এর মধ্যে একটি বিশেষ অংশ PowerPoint (PPT/PPTX) ফাইল নিয়ে কাজ করার জন্য XSLF (XML Slide Layout Format) API। এই API ব্যবহার করে আপনি PowerPoint প্রেজেন্টেশনের স্লাইড এবং তাদের কনটেন্ট সহজে অ্যাক্সেস করতে পারবেন।
এখানে আমরা আলোচনা করবো কিভাবে অ্যাপাচি পিওআই ব্যবহার করে PowerPoint ফাইলের স্লাইড এবং তাদের কনটেন্ট পড়া এবং সম্পাদনা করা যায়।
PowerPoint ফাইল (.pptx) থেকে স্লাইড এবং তাদের কনটেন্ট (যেমন টেক্সট, ইমেজ, টেবিল ইত্যাদি) অ্যাক্সেস করতে XSLF API ব্যবহার করা হয়।
PowerPoint ফাইলের সাথে কাজ করতে আপনাকে poi-ooxml
ডিপেনডেন্সি আপনার pom.xml
(Maven) অথবা build.gradle
(Gradle) ফাইলে যুক্ত করতে হবে।
Maven Dependency:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version> <!-- সর্বশেষ সংস্করণ -->
</dependency>
Gradle Dependency:
dependencies {
implementation 'org.apache.poi:poi-ooxml:5.2.3' // সর্বশেষ সংস্করণ
}
এখন, আসুন একটি PowerPoint (.pptx) ফাইল থেকে স্লাইড এবং তাদের কনটেন্ট কিভাবে পড়া যায় তা দেখি।
import org.apache.poi.xslf.usermodel.*;
import java.io.FileInputStream;
import java.io.IOException;
public class PowerPointReader {
public static void main(String[] args) throws IOException {
// PowerPoint ফাইল লোড করুন
FileInputStream fis = new FileInputStream("example.pptx");
XMLSlideShow ppt = new XMLSlideShow(fis);
// স্লাইড গুলোর মাধ্যমে লুপ চালান
for (XSLFSlide slide : ppt.getSlides()) {
System.out.println("Slide Title: " + slide.getTitle()); // স্লাইডের শিরোনাম প্রিন্ট করুন
// স্লাইডের মধ্যে টেক্সট কনটেন্ট প্রিন্ট করুন
for (XSLFShape shape : slide.getShapes()) {
if (shape instanceof XSLFTextShape) {
XSLFTextShape textShape = (XSLFTextShape) shape;
System.out.println("Text: " + textShape.getText()); // টেক্সট প্রিন্ট করুন
}
}
}
ppt.close();
}
}
ppt.getSlides()
মেথডের মাধ্যমে সব স্লাইড লোড করা হয়।XSLFTextShape
ক্লাসের সাহায্যে স্লাইডের টেক্সট কনটেন্ট অ্যাক্সেস করা হয়।PowerPoint ফাইলের স্লাইডে শুধুমাত্র টেক্সট নয়, ইমেজ, টেবিল বা গ্রাফিক্সও থাকতে পারে। এগুলিও অ্যাক্সেস করা সম্ভব।
for (XSLFShape shape : slide.getShapes()) {
if (shape instanceof XSLFPictureData) {
XSLFPictureData pictureData = (XSLFPictureData) shape;
byte[] imageData = pictureData.getData(); // ইমেজ ডেটা
System.out.println("Image found with size: " + imageData.length);
}
}
for (XSLFShape shape : slide.getShapes()) {
if (shape instanceof XSLFTable) {
XSLFTable table = (XSLFTable) shape;
for (int i = 0; i < table.getNumberOfRows(); i++) {
XSLFTableRow row = table.getRow(i);
for (int j = 0; j < row.getCells().size(); j++) {
XSLFTableCell cell = row.getCell(j);
System.out.print("Cell[" + i + "][" + j + "]: " + cell.getText() + "\t");
}
System.out.println();
}
}
}
আপনি চাইলে PowerPoint ফাইলের স্লাইডে কনটেন্ট যোগ বা পরিবর্তন করতে পারেন। নিচে একটি উদাহরণ দেয়া হলো যেখানে টেক্সট পরিবর্তন করা হচ্ছে:
import org.apache.poi.xslf.usermodel.*;
import java.io.FileOutputStream;
import java.io.IOException;
public class PowerPointWriter {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("example.pptx");
XMLSlideShow ppt = new XMLSlideShow(fis);
// প্রথম স্লাইডে টেক্সট পরিবর্তন করা
XSLFSlide slide = ppt.getSlides().get(0);
for (XSLFShape shape : slide.getShapes()) {
if (shape instanceof XSLFTextShape) {
XSLFTextShape textShape = (XSLFTextShape) shape;
textShape.setText("Updated Text: New Content");
}
}
// নতুন PowerPoint ফাইল তৈরি করা
FileOutputStream out = new FileOutputStream("updated_example.pptx");
ppt.write(out);
out.close();
ppt.close();
}
}
এখানে XSLFTextShape.setText()
মেথড ব্যবহার করে স্লাইডের টেক্সট পরিবর্তন করা হচ্ছে।
অ্যাপাচি পিওআই (Apache POI) XSLF API ব্যবহার করে আপনি PowerPoint ফাইলের স্লাইড এবং তাদের কনটেন্ট (যেমন টেক্সট, ইমেজ, টেবিল) অ্যাক্সেস এবং সম্পাদনা করতে পারেন। XMLSlideShow
ক্লাস এবং XSLFSlide
থেকে XSLFShape
শ্রেণি ব্যবহার করে আপনি ফাইলের সব কনটেন্টকে পর্যবেক্ষণ এবং সম্পাদনা করতে সক্ষম হন। এটি বিশেষভাবে পিপিটি ফাইলের স্বয়ংক্রিয় ডেটা এক্সট্র্যাকশন এবং কাস্টমাইজেশন করার জন্য উপকারী।